/**
 * @file		ipcu.h
 * @brief		IPCU
 * @note		None
 * @attention	None
 * 
 * <B><I>ALL RIGHTS RESERVED, COPYRIGHT&copy; SOCIONEXT INCORPORATED 2016</I></B>
 */


/** @weakgroup ipcu_overview
@{
	IPCU base function.<br>
@}*//* --- end of ipcu_overview */

/** @weakgroup ipcu_sequence
@{
	- @ref ipcu_send_notification
	- @ref ipcu_receive_request_sequence
	
	@section ipcu_send_notification Sequence example (Initilization, Send Notification).
	@image html ipcu_send_notification.png
	<br>
	@section ipcu_receive_request_sequence Sequence example (Receive Request).
	@image html ipcu_receive_request.png
	<br>

@}*//* --- end of ipcu_sequence */

#ifndef _IPCU_H_
#define _IPCU_H_

/** @weakgroup ipcu_func
@{*/

#include "CMDinterpreter.h"

#define	D_IPCU_NOTIFY_COMMAND_MAX			(4)		/**< Notify command data max size : 4	*/

#define	D_IPCU_ERROR_TYPE_PARAMETER_NG		(1)		/**< Command Parameter NG	*/
#define	D_IPCU_ERROR_TYPE_STATUS_ERROR		(2)		/**< Status Error			*/
#define	D_IPCU_ERROR_TYPE_FUNCTION_ERROR	(3)		/**< Function Error			*/

/**
IPCU Initialization.
@retval  void
*/
extern void vIPCUInit(void);

/**
IPCU Set Notify Command Data.
@param [in]	ulCommandData	Notify command data.
@param [in]	ulSize			Notify command data size.
@retval  void
*/
extern void vIPCUSetNotifyCommand(unsigned long ulCommandData[D_IPCU_NOTIFY_COMMAND_MAX], unsigned long ulSize);

/**
IPCU Send Response message.
@retval  void
*/
extern void vIPCUSendResponse(void);

/**
IPCU Send Notification message.
@param [in]	ulNotifyCode		Notify Code.
@retval  void
*/
extern void vIPCUSendNotification(unsigned long ulNotifyCode);

/* @} */	// ipcu_func group

#endif	// _IPCU_H_
